Przykad 9.5. Zapytania o najbliszego ssiada zrealizowane na kd-drzewie
// Metoda z klasy KDTree
public IMultiPoint nearest (IMultiPoint target) {
   if (root == null) return null;

   // Znajd wze rodzicielski, do ktrego mona by wstawi element
   // docelowy. To jest nasz najlepszy strza, jeli chodzi o zlokalizowanie
   // najbliszego punktu; oblicz najlepsz odlego trafion do tej pory
   DimensionalNode parent = parent(target);
   IMultiPoint result = parent.point;
   double smallest = target.distance(result);

   // Teraz zacznij znw od korzenia i sprawdzaj wszystkie prostokty,
   // ktre mog zachodzi na t najmniejsz odlego. Jeli znaleziono
   // lepszy, to zwr go
   double best[] = new double[] { smallest };

   double raw[] = target.raw();
   IMultiPoint betterOne = rot.nearest (raw, best);
   if (betterOne != null) { return betterOne; }
   return result;
}

// Metoda z klasy DimensionalNode. Tablica min[0] zawiera najlepsz
// (najkrtsz) obliczon odlego
IMultiPoint nearest (double[] rawTarget, double min[]) {
   // Uaktualnij minimum, jeli jestemy bliej
   IMultiPoint result = null;

   // Jeli krtsza, uaktualnij minimum
   double d = shorter(rawTarget, min[0]);
   if (d >= 0 && d < min[0]) {
      min[0] = d;
      result = point;
   }

   // Ustal, czy musimy zagbia si w poddrzewa, obliczajc
   // bezporedni odlego prostopad do osi, wzdu ktrej wze
   // dzieli paszczyzn. Jeli d jest mniejsza ni aktualnie najkrtsza
   // odlego, to moglibymy "zabrn" w paszczyzn, trzeba wic
   // sprawdzi jedno i drugie
   double dp = Math.abs(coord  rawTarget[dimension-1]);
   IMultiPoint newResult = null;

   if (dp < min[0]) {
      // Trzeba si zagbi w oba. Zwr najblisze
      if (above != null) {
         newResult = above.nearest(rawTarget, min);
         if (newResult ! = null) { result = newResult; }
      }

      if (below != null) {
         newResult = below.nearest(rawTarget, min);
         if (newResult ! = null) { result = newResult; }
      }
   } else {
      // Trzeba wej tylko w jedno! Ustal, w ktre
      if (rawTarget[dimension-1] < coord) {
         if (below != null) {
            newResult = below.nearest(rawTarget, min);
         }
      } else {
         if (above != null) {
            newResult = below.nearest(rawTarget, min);
         }
      }

      // Uyj mniejszego wyniku, jeli go znaleziono
      if (newResult != null) { return newResult; }
   }
   return result;
}
